﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Fast.Presentation.WinForms.Cruds;
using Fast.Presentation.WinForms.Relatórios;
using Contract.Business.Process;
using Contract.Business.Entity;
using Contract.Business.Filter;

namespace Fast.Presentation.WinForms
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        #region Singleton
        private BPConfiguracao bpConfig;
        private BPConfiguracao processConfig
        {
            get
            {
                if (bpConfig == null)
                    bpConfig = new BPConfiguracao();

                return bpConfig;
            }
        }
        #endregion
        private void regiãoDeEntregaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FrmRegiaoEntrega form = new FrmRegiaoEntrega();
            form.ShowDialog();
        }

        private void subGrupoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FrmSubGrupo frm = new FrmSubGrupo();
            frm.ShowDialog();
        }

        private void produtoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FrmProduto frm = new FrmProduto();
            frm.ShowDialog();
        }

        private void tipoDePagamentoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FrmTipoPagamento frm = new FrmTipoPagamento();
            frm.ShowDialog();
        }

        private void tamanhosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FrmTamanho frm = new FrmTamanho();
            frm.ShowDialog();
        }

        private void grupoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FrmGrupo frm = new FrmGrupo();
            frm.ShowDialog();
        }

        private void funçãoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FrmFuncao frm = new FrmFuncao();
            frm.ShowDialog();
        }

        private void funcionárioToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FrmFuncionario frm = new FrmFuncionario();
            frm.ShowDialog();
        }

        private void clienteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FrmCliente frm = new FrmCliente();
            frm.ShowDialog();
        }

        private void vendaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                FrmVenda frm = new FrmVenda();
                frm.ShowDialog();
            }
            catch (Exception)
            {
            }
        }

        private void exportarDadosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                BPVenda venda = new BPVenda();
                venda.TransmitirVendasWeb();

                Utilidades.ExibirMensagem("Vendas exportadas com sucesso.");
            }
            catch (Exception ex)
            {
                Utilidades.LogarError(ex);
                MessageBox.Show(Utilidades.BuscarMensagemError());
            }
        }

        private void configuraçãoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            frmConfiguracao frm = new frmConfiguracao();
            frm.ShowDialog();
        }

        private void promoçãoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FrmPromocao frm = new FrmPromocao();
            frm.ShowDialog();
        }

        private void imprimirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            PrintTest frm = new PrintTest();
            frm.ShowDialog();
        }

        private void pictureBox1_Click(object sender, EventArgs e)
        {
            clienteToolStripMenuItem.PerformClick();
        }

        private void pictureBox2_Click(object sender, EventArgs e)
        {
            funcionárioToolStripMenuItem.PerformClick();
        }

        private void pictureBox3_Click(object sender, EventArgs e)
        {
            vendaToolStripMenuItem.PerformClick();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                frmLogin frm = new frmLogin();
                while (!frm.logado)
                    frm.ShowDialog();

                BEConfiguracao config = processConfig.ObterTodos(new FEConfiguracao()).Single();
                if (!config.NovidadeVisualizada)
                {
                    FrmNovidades frmNovidade = new FrmNovidades();
                    frmNovidade.ShowDialog();

                    processConfig.MarcarNovidadeVisualizada();
                }
            }
            catch (Exception)
            {
                Application.Exit();
            }
        }

        private void diarioToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FrmRptVenda report = new FrmRptVenda();
            report.tipo = TipoRelatorioVenda.Diario;
            report.ShowDialog();
        }

        private void mensalToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FrmRptVenda report = new FrmRptVenda();
            report.tipo = TipoRelatorioVenda.Mensal;
            report.ShowDialog();
        }

        private void anualToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FrmRptVenda report = new FrmRptVenda();
            report.tipo = TipoRelatorioVenda.Anual;
            report.ShowDialog();
        }

        private void semanalToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FrmRptVenda report = new FrmRptVenda();
            report.tipo = TipoRelatorioVenda.Semanal;
            report.ShowDialog();
        }
        private void novidadesToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FrmNovidades frm = new FrmNovidades();
            frm.ShowDialog();
        }

        private void produtoToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            FrmRptProdutoConsultar frm = new FrmRptProdutoConsultar();
            frm.ShowDialog();
        }

        private void fechamendoDeCaixaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FrmRptFechamentoCaixa frm = new FrmRptFechamentoCaixa();
            frm.ShowDialog();
        }

        private void doDiaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FrmRptProdutoPorcentagemVenda report = new FrmRptProdutoPorcentagemVenda();
            report.tipo = TipoRelatorioVenda.Diario;
            report.ShowDialog();
        }

        private void doMêsToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FrmRptProdutoPorcentagemVenda report = new FrmRptProdutoPorcentagemVenda();
            report.tipo = TipoRelatorioVenda.Mensal;
            report.ShowDialog();
        }

        private void daSemanaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FrmRptProdutoPorcentagemVenda report = new FrmRptProdutoPorcentagemVenda();
            report.tipo = TipoRelatorioVenda.Semanal;
            report.ShowDialog();
        }

        private void doAnoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FrmRptProdutoPorcentagemVenda report = new FrmRptProdutoPorcentagemVenda();
            report.tipo = TipoRelatorioVenda.Anual;
            report.ShowDialog();
        }
    }
}
